<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <script>
        // 文档地址 https://developer.mozilla.org/zh-CN/

        /******** Math数学对象 不是一个构造函数，不需要new来调用 直接调用属性和方法就行 ********/
        console.log(Math.PI);
        // 取最大值
        var max = Math.max(1, 2, 3, 1, 4, 6, 1);
        console.log(max);
        // 取绝对值
        console.log(Math.abs(-1));
        console.log(Math.abs('-1'));
        // 向下取整
        console.log(Math.floor(2.91));
        // 向上取整
        console.log(Math.ceil(3.19));
        // 四舍五入
        console.log(Math.round(1.1));
        console.log(Math.round(1.5));
        console.log(Math.round(-1.1));
        console.log(Math.round(-1.5)); // 这个结果是-1
        // 随机数方法 random()
        console.log(Math.random());
        // 得到包含2个数之间的随机整数
        function getRandom(min, max) {
            return Math.floor(Math.random() * (max - min + 1)) + min;
        }
        console.log(getRandom(1, 10));
        console.log('-----------------------------------');

        /******** Date日期对象 是一个构造函数 必须先(new)创建 ********/
        // 没有参数返回系统当前时间
        var date = new Date();
        console.log(date);
        // 常用参数
        var data1 = new Date(2019, 10, 1);
        console.log(data1); // 返回11月 不是10月 (0-11)

        var date2 = new Date('2019/10/1 8:8:8');
        console.log(date2);
        // 日期格式化
        var date3 = new Date()
        console.log(date3.getFullYear()); // 返回当前时间年份
        console.log(date3.getMonth() + 1); // 返回当前时间月份, 月份从0开始计 (0-11)
        console.log(date3.getDate()); // 返回当前几号
        console.log(date3.getDay()); // 返回当前周几 (周日0， 周一到六为0-6)
        // 获取 2021年9月10日 星期五
        var year = date3.getFullYear();
        var month = date3.getMonth() + 1;
        var dates = date3.getDate();
        var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
        var day = date.getDay();
        console.log('日期为：' + year + '年' + month + '月' + dates + '日 ' + arr[day]);

        // 获取时分秒
        console.log(date3.getHours()); // 时
        console.log(date3.getMinutes()); // 分
        console.log(date3.getSeconds()); // 秒
        // 返回当前时分秒函数 格式：08:08:08
        function getTimer() {
            var time = new Date();
            var h = time.getHours();
            h = h < 10 ? '0' + h : h;
            var m = time.getMinutes();
            m = m < 10 ? '0' + m : m;
            var s = time.getSeconds();
            s = s < 10 ? '0' + s : s;
            return h + ':' + m + ':' + s;
        }
        console.log(getTimer());

        // 获取时间戳
        console.log(date.valueOf());
        console.log(date.getTime());
        // 简单写法
        var date4 = +new Date();
        console.log(date4);
        // H5新增
        console.log(Date.now());

        // 倒计时
        function countDown(time) {
            var nowTime = +new Date(); // 获取当前时间戳
            var inputTime = +new Date(time) // 输入时间戳
            var times = (nowTime - inputTime) / 1000; // 剩余时间 秒
            var d = parseInt(times / 60 / 60 / 24);
            var h = parseInt(times / 60 / 60 % 24);
            var m = parseInt(times / 60 % 60);
            var s = parseInt(times % 60);
            return d + '天' + h + '时' + m + '分' + s + '秒';
        }
        console.log(countDown('2021/9/10 11:00:00')); // safari 2021-9-10 无法解析

        /******** 数组 ********/
        var arr = [1, 2, 3];
        console.log(arr[0]);

        var arr1 = new Array(); // 创建一个空数组

        var arr2 = new Array(2); // 创建一个长度为2的数组

        var arr3 = new Array(2, 3); // 创建数组内部存放2个元素2，3
        console.log(arr3);

        // 检测是否为数组
        // 1. instanceof 运算符
        console.log(arr3 instanceof Array); // true
        console.log(1 instanceof Array); // false
        // 2. isArray() 函数 H5新增 ie9以上支持
        console.log(Array.isArray(arr3)); // true
        console.log(Array.isArray(1)); // false

        // 添加删除数组元素
        // 1. push() 在数组末尾添加一个或多个元素 返回数组长度
        var arr4 = [1, 2, 3];
        arr4.push(4, 5, 'haha');
        console.log(arr4);
        // 2. unshift() 在数组的开头添加一个或多个元素 返回数组长度
        var arr5 = [1, 2, 3];
        arr5.unshift(0, 'haha');
        console.log(arr5);

        // 删除数组元素
        // 1. pop() 可以删除数组的最后一个元素，每次删除一个 返回被删除的元素
        var arr6 = [1, 2, 3, 5];
        arr6.pop();
        console.log(arr6);
        // 2. shift() 可以删除数组的第一个元素，每次删除一个 返回被删除的元素
        var arr7 = [-1, 1, 2, 3];
        arr7.shift();
        console.log(arr7);

        var testArr = [1500, 1200, 2000, 2100, 1800];
        var newArr = [];
        for (var i = 0; i < testArr.length; i++) {
            if (testArr[i] < 2000) {
                // newArr[newArr.length] = testArr[i];
                newArr.push(testArr[i]);
            }
        }
        console.log(newArr);

        // 数组排序
        // 1. 翻转数组
        var arr8 = [1, 2, 3, 4, 5, 6, 'haha', 9];
        arr8.reverse()
        console.log(arr8);
        // 2. 排序
        var arr9 = [13, 4, 77, 1];
        arr9.sort(function(a, b) {
            // return a - b;   // 按升序排列
            return b - a; // 按降序排列
        });
        console.log(arr9);

        // 素组索引方法 indexOf('元素') 返回该元素的索引 如果有多个只返回第一个 如果没有则返回-1 从前向后查
        var arr10 = ['red', 'green', 'blue', 'pink', 'blue'];
        console.log(arr10.indexOf('blue'));

        // 素组索引方法 lastIndexof('元素') 返回该元素的索引 如果有多个只返回第一个 如果没有则返回-1 从后向前查
        console.log(arr10.lastIndexOf('blue'));

        // 数组去重
        function unique(arr) {
            var newArray = [];
            for (var i = 0; i < arr.length; i++) {
                if (newArray.indexOf(arr[i]) === -1) {
                    newArray.push(arr[i]);
                }
            }
            return newArray;
        }
        console.log(unique(['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b']));

        // 数组转字符串 toString() 转字符串 默认,分割
        var arr11 = [1, 2, 3];
        console.log(arr11.toString());

        // join('分隔符')
        console.log(arr11.join('=='));

        // 数组合并
        var arr12 = [1, 2, 3, 4];
        console.log(arr12.concat([5, 6]));
    </script>

</head>

<body>

</body>

</html>